Built-in control devices, which control an object to be controlled by a built-in software, are used in technical fields such as automobiles, elevators and construction machines. The built-in software is advantageous in terms that it is possible to implement flexible and advanced control as compared to the conventional control method employing a mechanical mechanism and an electric circuit.
Recently, such built-in control devices, for example, vehicle control apparatuses have rapidly progressed to have higher performances, and accordingly, an increase in computation amount of a central processing unit (CPU) has been a problem. In order to solve this, there has been an effort to improve the computation amount per unit time by achieving a multi-core configuration or a multi-CPU configuration in which the number of CPU cores is increased.
However, there are a lot of problems in efficient execution of existing software, developed on the premise of a single-core processor, on a multi-core processor. In particular, it is a big problem to establish a task allocation method of parallelizing vehicle control software having a strict constraint on an execution order of a program and allocating the software to a plurality of cores.
PTL 1, which will be described later, describes a technique of efficiently allocating existing vehicle control software that have been developed for a single-core processor to a plurality of cores. In the same literature, an execution order of an existing program is secured by allocating a task to a core in a standby state for processing based on a dependency of the software and a progress status.
PTL 2, which will be described later, describes a technique of improving a real-time performance than the related art by securing a possibility that a task can be executed even when the task which requires a high CPU utilization rate occurs. In the same literature, a CPU utilization rate, which is required for allowing a task to satisfy a time constraint, is calculated based on the time constraint imposed on the task and a required amount of calculation of a real-time task, and the task is allocated such that the calculated CPU utilization, rate is maximized.